﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Apollo
{
    public interface ITargetable
    {
        Entity TargetEntity { get; set; }
        string TargetObjectId { get; set; }
    }

    public interface ITrackable
    {
        DateTime InsertDate { get; set; }
        string InsertBy { get; set; }

        DateTime? ModifiedDate { get; set; }
        string ModifiedBy { get; set; }
    }
    public interface ILegacy 
    {
        string LegacyApplication { get; set; }
        string LegacyID { get; set; }
    }
    public interface IStateable
    {
        DateTime StartDate { get; set; }
        DateTime? EndDate { get; set; }
        State State { get; set; }
    }
    public interface IPositionable {
        Position Position { get; set; }
    }
    public interface IDefault {
        bool IsDefault { get; set; }
    }

    public interface IHistory<T> 
    {
        T BelongsTo { get; set; }
        DateTime EffectiveDate { get; set; }
        DateTime LearnDate { get; set; }
        State State { get; set; }
    }

    public enum State { 
        Inactive = 0,
        Active = 1,
        Pending = 5,
        Closed = 6,
        DeletedFromOxigen = 10,
    }
}
